var express = require('express');
var router = express.Router();

const DB = require("../utils/db")
const {getmd5,signtoken}=require("../utils/config")

const jwt=require("jsonwebtoken")



router.post("/login",async (req,res,next)=>{
    // 期望前端传递两个参数:username  password 
    let  {username,password,password2}=req.body
    if(!username){
        next("请输入用户名")
        return
    }
    if(!password){
        next("请输入密码")
        return
    }


    // 查看数据库中是否有此用户（username在数据库中是否存在）
    let  sql=`select  *  from e_member where username="${username}"`
    let  [err,result]=await DB(sql)
    // console.log(result,"result");

    if(err){
        next("登录失败")
        return
    }
    
    // 没查询出来，说明没此用户
    if(result.length==0){
        next("此用户名还未注册，请先注册")
        return
    }

    // 如果有此账号,则验证密码是否正确(username和password必须一起成立)
    let  newpassword= getmd5(password)
    // console.log(newpassword);

    let  sql1=`SELECT *   FROM  e_member where username="${username}" and password="${newpassword}"`
    let [err1,result1]=await DB(sql1)
    // console.log(result1,"result1");

    if(err){
        next("登录失败，请稍后再试")
        return
    }

    if(result1.length==0){
        next("账号或密码错误")
        return
    }

    
    // 登录成功之后，后端会生成一个登录成功的凭证（存放着此用户的信息）
    // 然后再把凭证发送给前端
    let [{mid}]=result
    // console.log(mid);
   let t= signtoken({mid,username})



    // 前端得到凭证之后，把凭证存储下来。
    // 当此用户去访问需要权限的页面时，在发送请求的同时一并把凭证传递给后端（请求头）
    
    // 在需要权限的路由中，后端得到请求头传递过来的凭证之后，验证凭证中存储的信息（如果信息正确，则允许访问）

    // 前后端不分离时：使用cookie或session
    // 前后端分离时：token



    res.send({
        status:200,
        msg:"登录成功",
        t
    })


})


module.exports = router;